package cn.vshare.service;

import cn.vshare.entity.Kind;
import cn.vshare.entity.Video;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageInfo;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

public interface VideoService {
    void addVideo(Video video);

    /**
     * 根据用户id和种类id查询视频
     * @param userId
     * @param kindId
     * @return
     */
    Page<Video> getVideosByUserIdKinId(String userId, String kindId, int pageSize, int pageNum);



    Map createVideo(String videoUtilId, Video video, MultipartFile file, HttpServletRequest request);

    /**
     * 根据类别展示视频并分页
     *
     * @param cond
     * @return
     */
    Page<Video> queryVideoByKindId(Map<String, Object> cond);

    /**
     * 查询所有video信息
     * @return
     */
    // Page<Video> queryAllVideo();

    /**
     * 导航栏模糊搜索
     */
    Page<Video> getLikeVideos(Map<String, Object> cond);


    Page<Video> getVideoByUpTimeAndName(Map<String, Object> cond);


    /**
     * 分类统计视频信息
     * @param kind 视频类型
     * @return
     * @author penghaixing
     */
    int countVideoTypeByKind(Kind kind);

    /**
     * 通过点击数获取视频
     * @param kind
     * @return
     * @author penghaixin
     */
    int countViewTimesByKind(Kind kind);

    /**
     * 通过id找相应的视频z
     * @param id
     * @return
     */
    Video getVideoById(String id);




    void updateVideoById(String id, String status);


    void updateHYById(String id);

    /**
     * 播放视频
     * 查询单个视频
     * @param id 视频id
     * @return
     */

    Video queryVideoById(String id);

    /**
     * 该方法用来计算点击量
     * @param id
     */
    void updatePageview(String id);

    /**
     * 统计不同年龄段视频上传量
     * @param map
     * @return\
     * @author penghaixin
     */
    int countVideoByAge(Map<String, Object> map);

    /**
     * 通过用户id查询视频
     * @param pageNum
     * @param pageSize
     * @param userId
     * @return
     */
    Page<Video> queryVideoByUserId(int pageNum, int pageSize, String userId);

    /**
     * 更新视频信息
     * @param video
     * @return
     */
    int updateVideo(Video video);

    /**
     * 通过用户id 种类id 标题动态查询视频
     * @param video
     * @return
     */
    PageInfo<Video> getVideosByUserIdKindIdTitle(Video video, int pageSize, int pageNum);


}
